package router

import (
	"ginx/internal/middleware"

	"github.com/gin-gonic/gin"
)

// RouteRegister 子应用路由注册接口
type RouteRegister interface {
	RouteRegister(rg *gin.RouterGroup)
}

var (
	routers = make([]RouteRegister, 0) // 全局路由收集器
)

// RegisterRoute 注册子应用路由到收集器：其实是将每个接口存起来
func RegisterRoute(r RouteRegister) {
	routers = append(routers, r)
}

// InitRouters 自动注册所有收集的路由
func InitRouters(r *gin.Engine) {
	apiV1 := r.Group("/api/v1")
	apiV1.Use(middleware.JWTAuth())
	// 在这里遍历每个应用的接口，然后执行注册方法
	for _, router := range routers {
		router.RouteRegister(apiV1) // 遍历调用所有子应用的注册方法
	}
}
